লারাভেল মিডলওয়্যার (Laravel Middleware)

Web Development - লারাভেল (Laravel) - লারাভেল ব্যাসিক (Laravel Basic) |
3
3

লারাভেল Middleware: বাংলায় বিস্তারিত গাইড

Middleware লারাভেলের একটি গুরুত্বপূর্ণ ফিচার যা একটি রিকোয়েস্ট এবং রেসপন্সের মধ্যে বিভিন্ন লজিক বা শর্তাবলী প্রয়োগ করতে ব্যবহৃত হয়। এটি প্রধানত নিরাপত্তা এবং অথেনটিকেশনসহ বিভিন্ন কার্যক্রম পরিচালনার জন্য ব্যবহৃত হয়। Middleware আপনাকে নির্দিষ্ট রাউট বা কন্ট্রোলার মেথডের আগে বা পরে কাজ করতে দেয়।


1. Introduction (পরিচিতি)

Middleware হলো একটি ফিল্টার যা একটি HTTP রিকোয়েস্টের জন্য কিছু কাজ পরিচালনা করে। উদাহরণস্বরূপ, একটি অথেনটিকেশন মিডলওয়্যার ইউজার লগইন আছে কিনা তা যাচাই করে এবং ইউজার লগইন না থাকলে তাকে লগইন পেজে রিডিরেক্ট করে। Middleware প্রধানত অ্যাপ্লিকেশন স্তরে রিকোয়েস্ট ফিল্টারিং এবং প্রক্রিয়াকরণের জন্য ব্যবহৃত হয়।


2. Defining Middleware (মিডলওয়্যার সংজ্ঞায়িত করা)

লারাভেলে নতুন Middleware তৈরি করতে আপনি php artisan make:middleware MiddlewareName কমান্ডটি ব্যবহার করতে পারেন। এটি app/Http/Middleware ডিরেক্টরিতে একটি নতুন Middleware ফাইল তৈরি করবে।

উদাহরণ:

php artisan make:middleware CheckAge

এই কমান্ডটি চালালে, CheckAge.php নামে একটি ফাইল তৈরি হবে। এখানে আপনি handle() মেথডে আপনার লজিক যুক্ত করতে পারবেন।

উদাহরণ:

public function handle($request, Closure $next)
{
    if ($request->age <= 18) {
        return redirect('home');
    }

    return $next($request);
}

এই উদাহরণে, যদি ইউজারের বয়স ১৮ বছরের কম হয়, তাহলে তাকে home পেজে রিডিরেক্ট করা হবে।


3. Registering Middleware (মিডলওয়্যার নিবন্ধন করা)

Middleware তৈরি করার পরে, এটিকে app/Http/Kernel.php ফাইলে নিবন্ধন করতে হবে।

উদাহরণ:

protected $routeMiddleware = [
    'checkAge' => \App\Http\Middleware\CheckAge::class,
];

এখানে checkAge নামে Middleware রেজিস্টার করা হলো, যা পরে রাউটে ব্যবহার করা যাবে।


4. Global Middleware (গ্লোবাল মিডলওয়্যার)

Global Middleware হলো এমন Middleware, যা প্রতিটি HTTP রিকোয়েস্টে স্বয়ংক্রিয়ভাবে প্রয়োগ করা হয়। এগুলোকে app/Http/Kernel.php ফাইলে $middleware অ্যারের মধ্যে নিবন্ধন করতে হয়।

উদাহরণ:

protected $middleware = [
    \App\Http\Middleware\TrustProxies::class,
    \App\Http\Middleware\CheckForMaintenanceMode::class,
    // অন্য গ্লোবাল মিডলওয়্যার
];

এখানে Middleware গুলো সকল রিকোয়েস্টের জন্য প্রয়োগ হবে।


5. Assigning Middleware to Routes (রাউটে মিডলওয়্যার প্রয়োগ)

Middleware এক বা একাধিক রাউটের জন্য প্রয়োগ করা যায়। এর জন্য রাউটে middleware মেথড ব্যবহার করতে হবে।

উদাহরণ:

Route::get('/profile', function () {
    // Profile view logic
})->middleware('checkAge');

এখানে checkAge Middleware প্রয়োগ করা হয়েছে, যা রাউট এক্সেসের আগে বয়স যাচাই করবে।


6. Middleware Groups (মিডলওয়্যার গ্রুপ)

Middleware গ্রুপিং ব্যবহার করে একাধিক Middleware একসাথে একাধিক রাউটে প্রয়োগ করা যায়। লারাভেলে web এবং api নামে দুটি ডিফল্ট Middleware গ্রুপ আছে।

উদাহরণ:

protected $middlewareGroups = [
    'web' => [
        \App\Http\Middleware\EncryptCookies::class,
        \App\Http\Middleware\VerifyCsrfToken::class,
    ],
    'api' => [
        'throttle:60,1',
        'bindings',
    ],
];

এখানে web এবং api গ্রুপগুলো আলাদা ভাবে একাধিক Middleware যুক্ত করে তৈরি করা হয়েছে।


7. Middleware Aliases (মিডলওয়্যার এলিয়াস)

Middleware এর জন্য এলিয়াস বা সংক্ষিপ্ত নাম তৈরি করা যায়, যা রাউটে সহজেই ব্যবহার করা সম্ভব।

উদাহরণ:

protected $routeMiddleware = [
    'auth' => \App\Http\Middleware\Authenticate::class,
];

এখানে auth নামে এলিয়াস তৈরি করা হয়েছে, যা রাউটে সহজেই ব্যবহার করা যাবে।


8. Sorting Middleware (মিডলওয়্যার সাজানো)

কিছু Middleware একটি নির্দিষ্ট ক্রমে কাজ করতে পারে, যেমন সিকোয়েন্স মেনে মিডলওয়্যারগুলো কাজ করবে। Middleware গুলোর কার্যক্রমের আগে বা পরে কাজ করার জন্য Middleware গুলোর ক্রম নির্ধারণ করতে পারেন।


9. Middleware Parameters (মিডলওয়্যার প্যারামিটার)

Middleware-এ প্যারামিটার পাস করে শর্তাবলী আরও নির্দিষ্ট করা যায়। Middleware এর সাথে প্যারামিটার পাস করতে middleware মেথডে প্যারামিটার যুক্ত করা হয়।

উদাহরণ:

Route::get('/user/{id}', function ($id) {
    // ইউজার সম্পর্কিত তথ্য
})->middleware('role:admin');

এখানে role Middleware এ admin প্যারামিটার পাস করা হয়েছে।


10. Terminable Middleware (টার্মিনেবল মিডলওয়্যার)

কিছু Middleware আছে, যা রেসপন্স পাঠানোর পরে কাজ করে। এ ধরনের Middleware কে terminable middleware বলা হয়। এর জন্য Middleware ক্লাসে একটি terminate মেথড ব্যবহার করা হয়।

উদাহরণ:

public function terminate($request, $response)
{
    // After response is sent
}

এই মেথডটি রেসপন্স পাঠানোর পরেও কার্যকর হবে।


উপসংহার

লারাভেলের Middleware অ্যাপ্লিকেশন নিরাপত্তা, অথেনটিকেশন, অথরাইজেশনসহ বিভিন্ন কাজে গুরুত্বপূর্ণ ভূমিকা পালন করে। Middleware ব্যবহারের মাধ্যমে আপনি সহজে অ্যাপ্লিকেশনের কার্যক্রম নিয়ন্ত্রণ করতে পারেন। Middleware-এর মাধ্যমে আপনি রিকোয়েস্ট এবং রেসপন্স প্রক্রিয়ায় বিভিন্ন নিয়ম এবং লজিক যুক্ত করে অ্যাপ্লিকেশনকে আরও নিরাপদ এবং কার্যকর করতে পারেন।

Content added By
Promotion